home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 25
/
Cream of the Crop 25.iso
/
program
/
tvichw32.zip
/
README.RUS
< prev
next >
Wrap
Text File
|
1997-03-14
|
10KB
|
245 lines
{===================================================================}
{============ ╩ε∞∩εφσφ≥ TVicHW32 ================}
{===================================================================}
{========== Copyright (c) 1997 ╚µΦΩσσΓ ┬ΦΩ≥ε≡ ╚ΓαφεΓΦ≈ =========}
{========== victor@ivi.ugatu.ac.ru =========}
{===================================================================}
1. ╬┴╟╬╨ ╩╬╠╧╬═┼═╥└
=====================
TVicHW32 Γσ≡±Φ 1.1 ∩≡σΣ±≥αΓδ σ≥ Φτ ±σß shareware-Ωε∞∩εφσφ≥ ≤∩≡αΓδσφΦ
α∩∩α≡α≥≤≡εΘ PC Σδ Φ±∩εδⁿτεΓαφΦ Γ Delphi 2.x ∩εΣ Windows 95 Φ Windows NT.
TVicHW32 ²≥ε ≤∩≡ε∙σφφ√Θ αφαδεπ Φφ±≥≡≤∞σφ≥α WinRT(TM) Ωε∞∩αφΦΦ "Blue Water
Systems" (R).
┬ετ∞εµφε±≥Φ Ωε∞∩εφσφ≥α:
- τα∩Φ±ⁿ/≈≥σφΦσ ∩ε≡≥εΓ ΓΓεΣα-Γ√ΓεΣα Ωε∞∩ⁿ■≥σ≡α;
- Σε±≥≤∩ Ω ταΣαφφ√∞ αΣ≡σ±α∞ ⌠ΦτΦ≈σ±ΩεΘ ∩α∞ ≥Φ;
- εß≡αßε≥Ωα α∩∩α≡α≥φ√⌡ ∩≡σ≡√ΓαφΦΘ.
─δ εßσ±∩σ≈σφΦ Σε±≥≤∩α Ω α∩∩α≡α≥≤≡σ Γ ±ε±≥αΓσ Ωε∞∩εφσφ≥α Φ±∩εδⁿτ≤σ≥±
ΓΦ≡≥≤αδⁿφ√Θ Σ≡αΘΓσ≡ vichwXX.vxd Σδ ≡αßε≥√ ∩εΣ Windows 95 Φ kernel-mode Σ≡αΘΓσ≡
vichwXX.sys Σδ ≡αßε≥√ Γ ±≡σΣσ Windows NT.
┬ φατΓαφΦ ⌡ Σ≡αΘΓσ≡εΓ ß≤ΩΓ√ XX εßετφα≈α■≥:
00 - Σδ ετφαΩε∞Φ≥σδⁿφεΘ Γσ≡±ΦΦ;
11 - Σδ τα≡σπΦ±≥≡Φ≡εΓαφφ√⌡ ∩εδⁿτεΓα≥σδσΘ.
╟α≡σπΦ±≥≡Φ≡εΓαφφ√σ ∩εδⁿτεΓα≥σδΦ ∩εδ≤≈α■≥ Σ≡αΘΓσ≡√ vichw11.vxd Φ vichw11.sys
(ßστ Φ±⌡εΣφ√⌡ ≥σΩ±≥εΓ), α ≥αΩµσ Φ±⌡εΣφ√σ ≥σΩ±≥√ ∞εΣ≤δσΘ hw_32.pas Φ
loadhw.pas.
2. ╚═╤╥└╦╦▀╓╚▀
================
╩ε∞∩εφσφ≥ Φφ±≥αδδΦ≡≤σ≥± Γ ∩αδΦ≥≡≤ Ωε∞∩εφσφ≥εΓ φα ±≥≡αφΦ÷≤ "Drivers". ─δ
Φφ±≥αδδ ÷ΦΦ Ωε∞∩εφσφ≥α φσεß⌡εΣΦ∞ε:
- ±Ωε∩Φ≡εΓα≥ⁿ Γ±σ ⌠αΘδ√ Γ Γ√ß≡αφφ√Θ Ωα≥αδεπ (i.e. C:\HW).;
- ∩σ≡σ∞σ±≥Φ≥ⁿ ⌠αΘδ vichwXX.vxd Γ Ωε≡φσΓεΘ Ωα≥αδεπ Windows 95;
- ∩σ≡σ∞σ±≥Φ≥ⁿ ⌠αΘδ vichwXX.sys Γ Ωα≥αδεπ C:\<Windows_NT>\SYSTEM32\DRIVERS;
- τα∩≤±≥Φ≥ⁿ Delphi 2 Φ Γ√ß≡α≥ⁿ Component|Install|Add|browse Ω
C:\HW\hw_32.dcu Σδ ετφαΩε∞Φ≥σδⁿφεΘ Γσ≡±ΦΦ ΦδΦ C:\HW\hw_32.pas Σδ
τα≡σπΦ±≥≡Φ≡εΓαφφ√⌡ ∩εδⁿτεΓα≥σδσΘ;
- φαµα≥ⁿ OK Σδ ∩σ≡σΩε∞∩Φδ ÷ΦΦ ßΦßδΦε≥σΩΦ Ωε∞∩εφσφ≥εΓ.
3. ╥┼╤╥╚╨╬┬└═╚┼
=================
╩ε∞∩δσΩ≥σ ±εΣσ≡µΦ≥ ≥σ±≥εΓ√Θ ∩≡Φ∞σ≡ HW_TEST.DPR. ╟α∩≤±≥Φ≥σ σπε Φ ∩≡εΓσ≡ⁿ≥σ
∩≡αΓΦδⁿφε±≥ⁿ Φφ±≥αδδ ÷ΦΦ Φ ≡αßε≥ε±∩ε±εßφε±≥ⁿ Ωε∞∩εφσφ≥α.
4. ╧╨┼─╙╧╨┼╞─┼═╚▀
===================
╨αßε≥α ± α∩∩α≡α≥≤≡εΘ φα∩≡ ∞≤■ Φτ Win32-∩≡ΦδεµσφΦ ┬√ ∩≡ΦφΦ∞ασ≥σ φα ±σß Γ±■
ε≥Γσ≥±≥Γσφφε±≥ⁿ τα Γετ∞εµφ√σ ∩ε±δσΣ±≥ΓΦ , ≥αΩ ΩαΩ ²≥ε φσ ∩≡σΣ≤±∞ε≥≡σφε
≡ατ≡αßε≥≈ΦΩα∞Φ Windows 95 Φ Windows NT.
5. ╬┴┘╚┼ ╤┬╬╔╤╥┬└ ╚ ╠┼╥╬─█
============================
constructor Create(Owner:TComponent); override;
----------------------------------------------
╤≥αφΣα≡≥φεσ ±ετΣαφΦσ Ωε∞∩εφσφ≥α. ─≡αΘΓσ≡ αΓ≥ε∞α≥Φ≈σ±ΩΦ _φσ_ ε≥Ω≡√Γασ≥± .
═σεß⌡εΣΦ∞ε ∩ετΣφσσ ε≥Ω≡√≥ⁿ σπε ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα OpenDriver.
destructor Destroy; override;
-----------------------------
╤≥αφΣα≡≥φεσ ≤φΦ≈≥εµσφΦσ Ωε∞∩εφσφ≥α. ┼±δΦ ß√δε ταΣαφε α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ,
≥ε εφε ∞α±ΩΦ≡≤σ≥± Φ ≤φΦ≈≥εµασ≥± . ┼±δΦ Σ≡αΘΓσ≡ ß√δ ε≥Ω≡√≥, ≥ε εφ
ταΩ≡√Γασ≥± .
procedure OpenDriver;
-----------------------
╟απ≡≤µασ≥ Σ≡αΘΓσ≡ vichwXX.vxd (Windows 95) ΦδΦ vichwXX.sys (Windows NT) Φ
ε≥Ω≡√Γασ≥ Σε±≥≤∩ Ω α∩∩α≡α≥≤≡σ. ┼±δΦ ΓετΓ≡α∙σφφ√Θ Γ ±ΓεΘ±≥Γσ ActiveHW ≡στ≤δⁿ≥α≥
- TRUE, ≥ε ≡αßε≥α ± α∩∩α≡α≥≤≡εΘ Γετ∞εµφα. ╬≥Ω≡√Γα≥ⁿ Σ≡αΘΓσ≡ φσεß⌡εΣΦ∞ε εΣΦφ ≡ατ
∩≡Φ τα∩≤±Ωσ ∩≡ΦδεµσφΦ . ╧εΓ≥ε≡φεσ ε≥Ω≡√≥Φσ φσΣε∩≤±≥Φ∞ε.
procedure CloseDriver;
------------------------
╟αΩ≡√Γασ≥ Σ≡αΘΓσ≡ Φ Γ√π≡≤µασ≥ σπε Φτ ∩α∞ ≥Φ, ≥σ∞ ±α∞√∞ ταΓσ≡°α ≡αßε≥≤ ±
α∩∩α≡α≥≤≡εΘ. ┼±δΦ Φ±∩εδⁿτεΓαδα±ⁿ ≡αßε≥α ± ∩≡σ≡√ΓαφΦσ∞, ≥ε εφε ∞α±ΩΦ≡≤σ≥± Φ
≤φΦ≈≥εµασ≥± . ╤ΓεΘ±≥Γε ActiveHW ≤±≥αφαΓδΦΓασ≥± Γ FALSE.
property ActiveHW : Boolean; (published, read);
-----------------------------------------------
╚φΣΦ÷Φ≡≤σ≥ Γετ∞εµφε±≥ⁿ ≡αßε≥√ ± α∩∩α≡α≥≤≡εΘ.
6. ─╬╤╥╙╧ ╩ ╟└─└══█╠ └─╨┼╤└╠ ╘╚╟╚╫┼╤╩╬╔ ╧└╠▀╥╚
==========================================================
function MapPhysToLinear(PhAddr:dWord; Size:dWord):Pointer;
-------------------------------------------------------------
╬≥εß≡αµασ≥ ταΣαφφ√Θ ⌠ΦτΦ≈σ±ΩΦΘ αΣ≡σ±(PhAddr) Ω ≤Ωατα≥σδ■ φα δΦφσΘφ≤■
∩α∞ ≥ⁿ, Σε±≥≤∩φε∞≤ Φτ ∩≡ΦδεµσφΦ . Size - ≡ατ∞σ≡ Φ±∩εδⁿτ≤σ∞εΘ εßδα±≥Φ ⌠ΦτΦ≈σ±ΩεΘ
∩α∞ ≥Φ. ╬ΣφεΓ≡σ∞σφφε ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ ≥εδⁿΩε εΣφ≤ εßδα±≥ⁿ ⌠ΦτΦ≈σ±ΩεΘ ∩α∞ ≥Φ.
╧ε±δσ ∩εΓ≥ε≡φεπε Γ√τεΓα ∞σ≥εΣα ± Σ≡≤πΦ∞Φ ∩α≡α∞σ≥≡α∞Φ ∩≡σΣ√Σ≤∙ΦΘ ≤Ωατα≥σδⁿ
±≥αφεΓΦ≥± φσΣσΘ±≥ΓΦ≥σδⁿφ√∞!
═α∩≡Φ∞σ≡, Σδ ≤±≥αφεΓΩΦ ≤Ωατα≥σδ φα εßδα±≥ⁿ ROM BIOS (f000:0000) ∞εµφε
±Σσδα≥ⁿ ≥αΩ:
type TBiosArray = array[0..255] of Byte;
PBiosArray =^TBiosArray;
var pBIOS : PBiosArray;
....
begin
with VicHw32 do
begin
OpenDriver;
if ActiveHW then
begin
pBIOS:=MapPhysToLinear($F8000,256)
.....
..... working with pBIOS .....
.....
CloseDriver;
end
else ShowMessage('Driver not opened...');
end;
end;
7. ╨└┴╬╥└ ╤ ╧╬╨╥└╠╚ ┬┬╬─└/┬█┬╬─└
================================
property Port[Index:Word] : Byte;(public, read, write);
--------------------------------------------------------
╟α∩Φ±ⁿ Γ ∩ε≡≥ ΦδΦ ≈≥σφΦσ Φτ ∩ε≡≥α εΣφεπε ßαΘ≥α. └Σ≡σ± ∩ε≡≥α ταΣασ≥± Γ ∩εδσ
Index.
property PortW[Index:Word] : Word;(public, read, write);
--------------------------------------------------------
╟α∩Φ±ⁿ Γ ∩ε≡≥ ΦδΦ ≈≥σφΦσ Φτ ∩ε≡≥α εΣφεπε cδεΓα Φτ ΣΓ≤⌡ ßαΘ≥. └Σ≡σ± ∩ε≡≥α
ταΣασ≥± Γ ∩εδσ Index.
property PortL[Index:Word] :dWord;(public, read, write);
--------------------------------------------------------
╟α∩Φ±ⁿ Γ ∩ε≡≥ ΦδΦ ≈≥σφΦσ Φτ ∩ε≡≥α ΣΓεΘφεπε ±δεΓα Φτ ≈σ≥√≡σ⌡ ßαΘ≥. └Σ≡σ±
∩ε≡≥α ταΣασ≥± Γ ∩εδσ Index.
property HardAccess : Boolean; (published, read, write);
--------------------------------------------------------
╙±≥αφαΓδΦΓασ≥ "µσ±≥ΩΦΘ" (TRUE) ΦδΦ "∞ πΩΦΘ" (FALSE) ≡σµΦ∞ Σε±≥≤∩α Ω ∩ε≡≥α∞
ΓΓεΣα-Γ√ΓεΣα. "╠ πΩΦΘ" ≡σµΦ∞ εßσ±∩σ≈ΦΓασ≥ ßεδσσ Γ√±εΩ≤■ ±Ωε≡ε±≥ⁿ Σε±≥≤∩α Ω
∩ε≡≥α∞, φε ∞επ≤≥ ΓετφΦΩφ≤≥ⁿ ∩≡εßδσ∞√, σ±δΦ φ≤µφ√σ ∩ε≡≥√ ≤µσ Φ±∩εδⁿτ≤■≥±
ΩαΩΦ∞-δΦßε Σ≡αΘΓσ≡ε∞ ±Φ±≥σ∞√. "╞σ±≥ΩΦΘ" ≡σµΦ∞ ßεδσσ ∞σΣδσφφ√Θ, φε ∩ετΓεδ σ≥
Σε±≥≤∩ Ω δ■ß√∞ ∩ε≡≥α∞ Ωε∞∩ⁿ■≥σ≡α. ╤φα≈αδα ∩ε∩√≥αΘ≥σ±ⁿ Φ±∩εδⁿτεΓα≥ⁿ "∞ πΩΦΘ"
≡σµΦ∞.
╧≡Φ∞σ≡ ≡αßε≥√ ± ∩ε≡≥α∞Φ ΓΓεΣα-Γ√ΓεΣα:
with VicHw32 do
begin
.....
Port[$2F8]:=$34; // τα∩Φ±ⁿ ßαΘ≥α Γ ∩ε≡≥
.....
MyByte:=Port[$2f9]; // ≈≥σφΦσ ßαΘ≥α Φτ ∩ε≡≥α
.....
end;
8. ╨└┴╬╥└ ╤ └╧╧└╨└╥═█╠╚ ╧╨┼╨█┬└═╚▀╠╚
====================================
╤ΓεΘ±≥Γα Φ ∞σ≥εΣ√ ≡αßε≥√ ± α∩∩α≡α≥φ√∞ ∩≡σ≡√ΓαφΦσ∞ ε∩Φ±αφ√ Γ ≥ε∞ ∩ε≡ ΣΩσ,
Ωε≥ε≡επε φσεß⌡εΣΦ∞ε ∩≡ΦΣσ≡µΦΓα≥ⁿ± ∩≡Φ ±ετΣαφΦΦ ∩≡επ≡α∞∞√ εß≡αßε≥ΩΦ ∩≡σ≡√ΓαφΦ .
╩ε∞∩εφσφ≥ ∩ετΓεδ σ≥ εß≡αßα≥√Γα≥ⁿ ≥εδⁿΩε εΣφε α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ
εΣφεΓ≡σ∞σφφε.
property OnHwInterrupt :TNotifyEvent; published;
------------------------------------------------
╬∩≡σΣσδ σ≥ ∩≡ε÷σΣ≤≡≤ εß≡αßε≥ΩΦ α∩∩α≡α≥φεπε ∩≡σ≡√ΓαφΦ . ╬ß≡αßε≥≈ΦΩ ±εß√≥Φ
OnHWInterrupt Γ√∩εδφ σ≥± Γ ε≥Σσδⁿφε∞ ∩ε≥εΩσ, ∩ε²≥ε∞≤ Γ√τεΓ Φτ φσπε ⌠≤φΩ÷ΦΘ VCL
φσΓετ∞εµσφ. ╠φεΘ ∩≡εΓσ≡σφα ²⌠⌠σΩ≥ΦΓφε±≥ⁿ εß≡αßε≥ΩΦ ∩≡σ≡√ΓαφΦΘ ± ∞ΦφΦ∞αδⁿφ√∞
∩σ≡ΦεΣε∞ 0,1 ∞ΦδδΦ±σΩ≤φΣα ∩≡Φ "∩≤±≥ε∞" εß≡αßε≥≈ΦΩσ ±εß√≥Φ OnHWInterrupt φα
Ωε∞∩ⁿ■≥σ≡σ Pentium-133 Γ ±≡σΣσ Windows 95, Windows NT 3.51 Φ Windows NT 4.0.
property IRQNumber : Byte; (published, read, write)
----------------------------------------------------
╙±≥αφαΓδΦΓασ≥ φε∞σ≡ φσεß⌡εΣΦ∞επε α∩∩α≡α≥φεπε ∩≡σ≡√ΓαφΦ Γ ΣΦα∩ατεφσ 1..15.
═σ ∩√≥αΘ≥σ±ⁿ ≤±≥αφεΓΦ≥ⁿ IRQNumber := 0, ≥σ∞ ±α∞√∞ Φτ∞σφ φα±≥≡εΘΩΦ ±Φ±≥σ∞φεπε
≥αΘ∞σ≡α. ╩ε∞∩εφσφ≥ φσ ∩ετΓεδ σ≥ ²≥επε Σσδα≥ⁿ.
procedure SetIRQ;
------------------
╤Γ τ√Γασ≥ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ, φε∞σ≡ Ωε≥ε≡επε Σεδµσφ ß√≥ⁿ ταΣαφ Γ
±ΓεΘ±≥Γσ IRQNumber, ± ±εß√≥Φσ∞ OnHWInterrupt. ╙±≥αφαΓδΦΓασ≥ ±ΓεΘ±≥Γε IsIRQSet
Ω τφα≈σφΦ■ TRUE. ─δ φα≈αδα εß≡αßε≥ΩΦ ∩≡σ≡√ΓαφΦσ φσεß⌡εΣΦ∞ε ≡ατ∞α±ΩΦ≡εΓα≥ⁿ (±∞.
∞σ≥εΣ UnmaskInterrupt);
procedure UnmaskInterrupt;
--------------------------
─σ∞α±ΩΦ≡≤σ≥ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ. ╥σ∩σ≡ⁿ ∩≡Φ ΩαµΣε∞ α∩∩α≡α≥φε∞ ∩≡σ≡√ΓαφΦΦ
ß≤Σσ≥ πσφσ≡Φ≡εΓα≥ⁿ± ±εß√≥Φσ OnHWInterrupt. ╙±≥αφαΓδΦΓασ≥ ±ΓεΘ±≥Γε Masked Ω
τφα≈σφΦ■ FALSE.
procedure MaskInterrupt;
------------------------
╠α±ΩΦ≡≤σ≥ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ, ∩ε±δσ ≈σπε ∩σ≡σ±≥ασ≥ Γ√τ√Γα≥ⁿ± εß≡αßε≥≈ΦΩ
OnHwInterrupt.
procedure DestroyIRQ;
---------------------
╙φΦ≈≥εµασ≥ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ. ╤ΓεΘ±≥Γε IsIRQSet ≤±≥αφαΓδΦΓασ≥± Ω
FALSE, α ±ΓεΘ±≥Γε Masked Ω τφα≈σφΦ■ TRUE.
property IsIRQSet : Boolean; (read only);
--------------------------------------------
╧ετΓεδ σ≥ ∩≡εΓσ≡Φ≥ⁿ, ≤±≥αφεΓδσφε δΦ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα
SetIRQ.
property Masked : Boolean; (read only);
-------------------------------------------
╧ετΓεδ σ≥ ∩≡εΓσ≡Φ≥ⁿ, τα∞α±ΩΦ≡εΓαφε δΦ α∩∩α≡α≥φεσ ∩≡σ≡√ΓαφΦσ ∩ε∞ε∙Φ ∞σ≥εΣα
MaskInterrupt.
property IRQCounter : dWord; (read only);
--------------------------------------------
╫Φ≥ασ≥ ΩεδΦ≈σ±≥Γε ∩≡σ≡√ΓαφΦΘ ∩σ≡σ⌡Γα≈σφφεσ Γφ≤≥≡Φ Σ≡αΘΓσ≡α. ╬ßφ≤δ σ≥± ∩≡Φ
Γ√∩εδφσφΦΦ ∞σ≥εΣα SetIRQ. ╠εµσ≥ ±δ≤µΦ≥ⁿ Σδ ±≡αΓφσφΦ ΩεδΦ≈σ±≥Γα ∩≡σ≡√ΓαφΦΘ
≡σαδⁿφε ±πσφσ≡Φ≡εΓαφφ√⌡ α∩∩α≡α≥≤≡εΘ ± ΩεδΦ≈σ±≥Γε∞ ∩≡σ≡√ΓαφΦΘ, εß≡αßε≥αφφ√⌡ Γ
┬α°σ∞ ∩≡ΦδεµσφΦΦ. ┬ΓσΣσφ Γ Ωε∞∩εφσφ≥ ± ε≥δαΣε≈φ√∞Φ ÷σδ ∞Φ.
procedure SimulateHwInt;
------------------------
╧ετΓεδ σ≥ ±Φ∞≤δΦ≡εΓα≥ⁿ εΣΦφε≈φ√σ ∩≡σ≡√ΓαφΦ . ╧ε±δσ Γ√τεΓα ²≥επε ∞σ≥εΣα
±Φπφαδ ∩σ≡σΣασ≥± Γ Σ≡αΘΓσ≡, α ε≥≥≤Σα ±Φ∞≤δΦ≡≤σ≥± ΓετφΦΩφεΓσφΦσ α∩∩α≡α≥φεπε
∩≡σ≡√ΓαφΦ . ▌≥ε≥ ∞σ≥εΣ ≤Σεßφε Φ±∩εδⁿτεΓα≥ⁿ Σδ ε≥δαΣΩΦ ∩≡ε÷σΣ≤≡√ εß≡αßε≥ΩΦ
∩≡σ≡√ΓαφΦΘ ßστ ≤≈α±≥Φ ≡σαδⁿφεΘ α∩∩α≡α≥≤≡√.
9. ╟└╩╦▐╫┼═╚┼
===============
╨στ≤δⁿ≥α≥√ Φ±∩εδⁿτεΓαφΦ Ωε∞∩εφσφ≥α, ∩εµσδαφΦ Φ ∩≡σΣδεµσφΦ ∩≡ε°≤ ∩ε±√δα≥ⁿ ∞φσ
φα e-mail αΣ≡σ± victor@ivi.ugatu.ac.ru.
┬.╚.╚µΦΩσσΓ,
π.╙⌠α, ∞α≡≥ 1997 πεΣα